#pragma once
#include <windows.h>
#include <atltypes.h>
#include <string>

class CMiniWin
{
public:
	CMiniWin();
	virtual ~CMiniWin();

	void Init(HWND parent, const CRect& bounds);

	HWND hwnd() const { return hwnd_; }

	std::wstring GetWindowClassName();

	void set_window_style(DWORD style) { window_style_ = style; }
	DWORD window_style() const { return window_style_; }

	void set_window_ex_style(DWORD style) { window_ex_style_ = style; }
	DWORD window_ex_style() const { return window_ex_style_; }

	void set_initial_class_style(UINT class_style) { class_style_ = class_style; }
	UINT initial_class_style() const { return class_style_; }

	BOOL ShowWindow(int nCmdShow);

protected:
	virtual LRESULT OnWndProc(UINT message, WPARAM w_param, LPARAM l_param);

private:
	static LRESULT __stdcall WndProc(HWND window,
		UINT message,
		WPARAM w_param,
		LPARAM l_param);

private:
	DWORD window_style_;

	DWORD window_ex_style_;

	UINT		class_style_;

	HWND	hwnd_;
};